home *** CD-ROM | disk | FTP | other *** search
Wrap
Text File | 2003-06-24 | 58.1 KB | 1,407 lines
<html> <head> <META name=VI60_DTCScriptingPlatform content="Client (IE 4.0 DHTML)"> <META name=VI60_defaultClientScript content=JavaScript> <title>CounterWatch Graphs</title> <link rel="stylesheet" type="text/css" href="css/rpmstyle.css"> <style> .WarningStyle { border: solid thin ; overflow:none; background-color:activeborder; width:550; height:50} .WarningStyle { border-top-color:white; border-left-color:white; border-bottom-color:graytext; border-right-color:graytext; } #MainDiv { background-color:activeborder; border:none; overflow:none; position:absolute; margin:0; height:100%; width:100% } #ButtonDiv { height:60px; background-color:activeborder; border:solid 1px graytext; border-top-color:graytext; overflow:none; position:absolute; margin:0; width:100%; top:480; visibility:hidden} .ChartStyle { border:solid 1px blue; overflow:none; position:absolute; background-color:white} .ChButton { position:absolute; margin:0; padding:0; border:none; top:0 } .IntroSpecs { font-size:9pt; font-weight:700; color:windowtext } LI {padding-bottom:6px} </style> </head> <body class="bodyc" scroll=no style="margin:3px; overflow: none" language="JavaScript" UserRights="!BreakoutBot:UserRights!" RPMServerAddress="!BreakoutBot:ServerAddress!" RPMCollectorPort="!BreakoutBot:CollectorPort!" BOBDone="!BreakoutBot:Done!" onclick="checkClick()" onkeydown="processBSP()" onload=" top.banner.savePageCoord(event,document.body,'AnalyzeCharts'); processChartInit()" onbeforeunload="processUnload()"> <script LANGUAGE="JavaScript"> <!-- //border:solid 3px graytext; border-bottom-color:activeborder //background-image: url(/images/Background.jpg) var divNameCnt = "0"; var PIP_On = true; // default PIP state var FullViewChartName = null; var CurSelectChart = null; var bdH = 60; // Button pixel height; must match value in #ButtonDiv style above var byM = null; var borderSz = 2; // Thin Bord is 2pixels var chartMargin = 3; // Chart Margin size 3pixels var SelectedBorderSz = borderSz+2; var ChartSelectedColor = "blue"; var ChartNotSelectedColor = "blue"; var Tid = null; var CObj = null; // Chart Manager object var BLast = null; // Last "play" type button pressed in var DeleteChID = null; // Chart ID to be deleted //Playback Delay Codes var PlaybackFast = 1; var PlaybackNormal = 5; var ChartObjectLoadError = false; var rszH = 0; // Capture and ignore script errors window.onerror = wwScrErr; function wwScrErr() { return true; } function ChartObjectError() { alert("Required ActiveX Control RPMGRAPH.OCX did not load properly!\nUnable to continue loading MonitorIT View Charts page."); ChartObjectLoadError = true; if ( top.MainLoaded == true ) { ButtonState(cNewButton,"1"); ButtonState(cOpenButton,"1"); } } function WaitForControlsClose(){ document.all.WarningBox.style.display = "none"; } // Process Onload Complete function processChartInit() { Tid = null; // reset if set if ( PrimaryGraphObj.readyState != 4 ) { // Has Graph Control been loaded? Tid = setTimeout("processChartInit()",100); // Not complete, delay 100 ms. then check again return; // exit and wait } if ( ChartButtonsLoaded == false ) { // Have buttons been loaded? if ( plChartButtons() == false ) { // No, go set them up Tid = setTimeout("processChartInit()",500); // Not complete, delay 100 ms. then check again return; // exit and wait } } document.body.RPMServerAddress = document.body.RPMHostIP; CObj = ChartMgr; // Chart manager object WaitForControlsClose(); top.MainLoaded = true; // Flag that Main is now loaded top.main.restore(); // insure Tree pane is visible // Set initial button state initButtonState(); // initialize buttons if ( ChartObjectLoadError == true ) { return; } // determine offsets used in height/width computations byM = 2*parseFloat(document.body.style.margin); processSizeChange(); // go set Window sizes ButtonDiv.style.visibility = "visible"; // show buttons top.banner.MerlinAssistance(); // check if in Merlin demo mode IntroGraphStateF = 0; // Set State Falg for Intro Graph handler Tree = top.main.TreePane.document.all.RPMTree; Tree.SetConnected(3,0,(document.body.UserRights=="0") ? 1 : 0 ); // tell Tree Analyzt Mode ProcPerfChecked = false; // reset Local Graph option checked Tid = setTimeout("processIntroGraphCheck()",1000); // Delay then check if Intro Graph Mode } function processIntroGraphCheck() { processIntroGraphMode(); // check if in Intro Graph mode } function processUnload() { top.BannerMenuShow(); top.banner.CurrentPageName = null; top.main.TreePane.InventoryEventHandling = false; // Disable Tree Inventory Event handler top.banner.processStopCommX(); if ( ProcPerfChecked == true ) { // Set by local graph option? //Tree.SetChecked(1,IcntItem,false); // yes- uncheck it for no monitoring Tree.SetItemState(1,IcntItem,0,2); // Unselect counter Tree.SetItemState(1,IoItem,0,2); // Unselect object Tree.SetItemState(1,IcItem,0,2); // Unselect computer } if ( Tid != null ) { clearTimeout(Tid); // stop timeout routine } if ( top.banner.Merlin != null ) { if ( top.banner.Merlin.Visible ) { // if Merlin visible, stop and hide top.banner.Merlin.StopAll("Move,Play,Speak"); top.banner.Merlin.Hide(true); if ( top.banner.Tid != null ) { clearTimeout(top.banner.Tid); // stop timeout routine } } } } // Process a Size Change event for the Browser display area function processSizeChange() { // Display Height and Width bCh = document.body.clientHeight; bCw = document.body.clientWidth; if ( top.main.IsTreeVisible() ) { top.main.VCcw = bCw; } // Miniumu size bCw = ( bCw < (654+byM-rszH) ) ? (654+byM-rszH) : bCw; bCh = ( bCh < 120 ) ? 120 : bCh; if (bCw <= (654+byM-rszH) || bCh <= 120) { if ( document.body.scroll != "yes" ) { bCh -= 15; } document.body.scroll = "yes"; } else { document.body.scroll = "no"; } // Set Height/Widths for Chart and Button areas MainDiv.style.height = bCh-(bdH+byM-borderSz)+rszH; MainDiv.style.width = bCw-byM; ButtonDiv.style.top = bCh-(bdH+byM-borderSz)+rszH; ButtonDiv.style.width = bCw-byM-2; //PopUpContext Menu PopUpContextSize(bCw); // Compute and set position for Button groups var i = ButtonDiv.style.posWidth; // width for button area if ( i < 654 ) { i = 32; } else { i -= 622; i = Math.round( i/2 ); i = (i < 32) ? 32 : i; } ChCtrlButtons.style.left = i; ChVCRButtons.style.left = i + 252; ChScrollButtons.style.left = i + 486; setChartPos(); // Adjust Chart positions } // Process NEW Chart Button function processNewChart() { // Add Chart Div to Chart Manager List NewChart = "ChartDiv"+divNameCnt; addElementToSelect(CObj,NewChart); ++divNameCnt; // Create HTML for adding Chart Div Ops = "<div id='" + NewChart + "' style='cursor:hand; margin:" + chartMargin; Ops += "px' class='ChartStyle' OpType='' BlV='' HData='' HCon='' HChart='' RDel='' DWait=''>"; Ops += '<object ID="RpmGrph' + NewChart + '" '; Ops += 'CLASSID="clsid:D8C8B275-CB6A-11D2-9BAD-204C4F4F5020" '; Ops += 'CODEBASE="controls/RpmGraph.cab#version=5,0,0,9"></object>'; Ops += '<script FOR="RpmGrph' + NewChart + '" EVENT="LogMsg(Src,Msg,Type)">'; Ops += 'processEventLogMsg(Src,Msg,Type);</script>'; Ops += '<script FOR="RpmGrph' + NewChart + '" EVENT="ChartList(ChartList)">'; Ops += 'processChartList(this,ChartList);</script>'; Ops += '<script FOR="RpmGrph' + NewChart + '" EVENT="HelpContext(TopicID,SubTID)">'; Ops += 'processHelp(TopicID,SubTID);</script>'; Ops += '<script FOR="RpmGrph' + NewChart + '" EVENT="HasData(DaStat)">'; Ops += 'processHasData(this,DaStat);</script>'; Ops += '<script FOR="RpmGrph' + NewChart + '" EVENT="HasChart(ChStat)">'; Ops += 'processHasChart(this,ChStat);</script>'; Ops += '<script FOR="RpmGrph' + NewChart + '" EVENT="HasConnection(CnStat)">'; Ops += 'processHasConnection(this,CnStat);</script>'; Ops += '<script FOR="RpmGrph' + NewChart + '" EVENT="Open()">'; Ops += 'processOpenDeleteEvent(this,"Open");</script>'; Ops += '<script FOR="RpmGrph' + NewChart + '" EVENT="Delete()">'; Ops += 'processOpenDeleteEvent(this,"Del");</script>'; Ops += '<script FOR="RpmGrph' + NewChart + '" EVENT="Click()">'; Ops += 'processOnSelectChart(this);</script>'; Ops += '<script FOR="RpmGrph' + NewChart + '" EVENT="Dblclick()">'; Ops += 'processOnSwapChart(this);</script>'; Ops += '<script FOR="RpmGrph' + NewChart + '" EVENT="Export(estat,exportfile)">'; Ops += 'processExportComplete(estat,exportfile);</script>'; Ops += '<script FOR="RpmGrph' + NewChart + '" EVENT="ExportStarted()">'; Ops += 'processExportStarted();</script>'; Ops += '</div>'; // Ouput HTML for new Chart Div MainDiv.insertAdjacentHTML("beforeEnd",Ops); // Unselect Previous Selected Chart if one if ( CurSelectChart != null ) { document.all[CurSelectChart].style.borderColor = ChartNotSelectedColor; document.all[CurSelectChart].style.borderWidth = borderSz+"px"; } if ( CObj.length > 1 ) { var cN = ( CurSelectChart == null ) ? FullViewChartName : CurSelectChart; document.all[cN].BlV = BLast; // save chart's active "Play" button if any SetButtonOut(BLast); // set button out if ( PIP_On == true ) { SetButtonIn("Pip"); } } // Set Default Values var GFobj = document.all[NewChart]; // Graph Frame object GFobj.BlV = "Play"; // default to "Play" button GFobj.HData = false; // default to no coumter data on the chart GFobj.HChart = false; // default to no chart GFobj.HCon = false; // default to no connection GFobj.RDel = false; // not ready to be deleted // Go compute sizes and positions FullViewChartName = NewChart; CurSelectChart = null; setChartPos(); // Set/Adjust Chart positions BLast = "Stop"; // default to "Stop" button setVCRButtons(false); } // Compute and Redisplay the Chart(s) function setChartPos() { if ( FullViewChartName == null ) return; // Exit if no Charts GraphO = document.all["RpmGrph"+FullViewChartName]; // Selected Graph Object FrameO = document.all[FullViewChartName]; // Selected Frame Object DivTitle.style.display = "none"; // Hide Title HelpText.style.display="none"; WH = MainDiv.style.posHeight; // Chart display Height WW = MainDiv.style.posWidth; // Chart display Width // Compute 20% of Chart display Width if PIP On WWi = Math.round( WW/5 ); // Compute position adjustment based on Margins and Borders SzAdj = (2*borderSz) + byM + (2*chartMargin); // Position the Full View Chart at Top and Size to 80% Width if more than 1 chart FrameO.style.height = WH-SzAdj; // If Only One Chart displayed if ( CObj.length == 1 || !PIP_On) { FrameO.style.width = WW-SzAdj; } else { // More Than One Chart; Compute FullView width of 80% FrameO.style.width = (WW-WWi)-SzAdj; } // Set Top/Left and Enable Display FrameO.style.top = "1"; FrameO.style.left = "1"; FrameO.style.display = ""; // Size the Control GraphO.width = FrameO.style.width; GraphO.height = FrameO.style.height; GraphO.NotifyFrameMode(false); // tell Chart it is Full View // Process Size Adjustment For NonFullView Charts if ( (lth = CObj.length-1) == 0 ) return; // Exit if none WHinc = Math.round( WH/lth ); // Compute height increment WWcur = WW-WWi-(2*chartMargin); // Width position reflecting 20% plus adjustment for Chart margins WHcur = 1; // Initialize for 1st WWa = WWi-(SzAdj-byM); // compute adjusted Width WHinc = (WHinc > (2*WWi)) ? WWi + Math.round( (3*WWi)/4 ): WHinc; // adjust for basic rectangles for PIPs // Position and size each Thumbnail Chart for ( var i=0; i < CObj.length; i++ ) { // Check each Chart in the Chart Manager if ( CObj.options[i].text == FullViewChartName ) continue; // Skip the Full View Chart cCN = CObj.options[i].text; // current Chart Name GraphO = document.all["RpmGrph"+cCN]; // current Graph Object FrameO = document.all[cCN]; // current Frame Object if ( PIP_On ) { // if PIP On , process the Thumbnails FrameO.style.left = WWcur; FrameO.style.top = WHcur; FrameO.style.width = WWa; FrameO.style.height = WHinc-SzAdj; FrameO.style.display = ""; WHcur += WHinc-(2*chartMargin); if ( i%3 == 0) // Small adjustment in width every 5th chart --WWcur // Size the Control in each one GraphO.width = FrameO.style.width; GraphO.height = FrameO.style.height; GraphO.NotifyFrameMode(true); // tell Chart it is PIP View } else { // if PIP off, disable display FrameO.style.display = "none"; } } // Set the FullView Chart the Selected/Active Chart if ( CurSelectChart == null ) { document.all[FullViewChartName].style.borderColor = ChartSelectedColor; document.all[FullViewChartName].style.borderWidth = SelectedBorderSz + "px"; CurSelectChart = FullViewChartName; } } // Process the Chart Scroll, Forward or Backward function processScrollChart(Sdir) { if ( FullViewChartName == null || cPipButton.bdis == "1" ) return; // exit if none or disabled // Find the Current Selected and the Full View Charts CSCix = FVCix = null; for ( var i=0; i < CObj.length; i++ ) { if ( CObj.options[i].text == CurSelectChart ) CSCix = i; if ( CObj.options[i].text == FullViewChartName ) FVCix = i; } // If a Chart is Currently Selected, Reset it if ( CSCix != null ) { document.all[CurSelectChart].BlV = BLast; // save chart's active "Play" button if any SetButtonOut(BLast); // set button out document.all[CurSelectChart].style.borderColor = ChartNotSelectedColor; document.all[CurSelectChart].style.borderWidth = borderSz+"px"; if ( CSCix == FVCix && PIP_On) { // If chart was FUll View Chart and PIP on CSCix = (Sdir) ? 0 : CObj.length-1; // Reset to 1st or Last based on direction } else { CSCix = (Sdir) ? ++CSCix : --CSCix; // Go to next based on direction } } else { // No Chart Selected, Default to 1st CSCix = 0; } // If Next Chart is Full View, Skip till end if ( CSCix == FVCix ) { CSCix = (Sdir) ? ++CSCix : --CSCix; // Go to next based on direction } // If At End and PIP On, Select Full View Chart if ( ((Sdir && CSCix >= CObj.length) || (!Sdir && CSCix < 0)) && PIP_On ) { document.all[FullViewChartName].style.borderColor = ChartSelectedColor; document.all[FullViewChartName].style.borderWidth = SelectedBorderSz + "px"; CurSelectChart = FullViewChartName; } else { // Otherwise Select Next Thumbnail // adjust if past beginning or end CSCix = (CSCix < 0) ? CObj.length-1 : CSCix; CSCix = (CSCix >= CObj.length) ? 0 : CSCix; // if PIP is Off make this selected one the Full View if ( !PIP_On ) { FullViewChartName = CObj.options[CSCix].text; setChartPos(); } else { // otherwise Select it document.all[CObj.options[CSCix].text].style.borderColor = ChartSelectedColor; document.all[CObj.options[CSCix].text].style.borderWidth = SelectedBorderSz + "px"; CurSelectChart = CObj.options[CSCix].text; } } var FrameO = document.all[CurSelectChart]; // new selected chart var GraphO = document.all["RpmGrph"+CurSelectChart]; // new selected chart setVCRButtons(FrameO.HData); // set VCR Buttons accordingly if ( FrameO.HData ) { BLast = FrameO.BlV; // restore state of "Play" button if any SetButtonIn(BLast); } top.Rstatus.Pstat("'"+GraphO.GetGraphName()+"' selected"); } // Make Current Selected Chart the new Full View One function processSelectChart() { if (CurSelectChart == null || FullViewChartName == CurSelectChart || cPipButton.bdis == "1" ) return; // exit if disabled, None selected or Full View already selected FullViewChartName = CurSelectChart; ButtonState(cSwapButton,"1"); // Swap button off setChartPos(); } // Process Toggle of PIP On or Off function processPIPToggle(Bobj) { if ( Bobj.bdis == "1" ) return; // exit if disabled PIP_On = (PIP_On) ? false : true; // toggle it if ( PIP_On ) { SetButtonIn("Pip"); } else { SetButtonOut("Pip"); ButtonState(cSwapButton,"1"); // Swap button off } document.all[CurSelectChart].style.borderColor = ChartNotSelectedColor; document.all[CurSelectChart].style.borderWidth = borderSz+"px"; CurSelectChart = null; setChartPos(); // go set Charts } // Process Chart Button Click function processChartButton(Type) { var Bobj = event.srcElement; // Button Object if ( Bobj.bdis == "1" ) return; // exit if disabled top.Rstatus.Pstat(""); // Clear status line doButtonProcessing(Type); } function doButtonProcessing(Type) { var GraphO = null; // Selected Graph Control Object var FrameO = null; // Selected Frame Object var selNme = null; // Selected Chart name // Determine selected chart name and entry position in the Chart Manager selNme = getSelectedChart(); // get selected Chart name selCmIx = getSelectedChartMgrIndex(selNme); // index in the Chart Manager // Get the Frame and Graph Control Objects if ( CObj.length > 0 ) { // if at least one frame GraphO = document.all["RpmGrph"+selNme]; // Selected Graph Object FrameO = document.all[selNme]; // Selected Frame Object } switch ( Type ) { // Process based on Button clicked // NEW and OPEN Button case "New" : case "Open": ButtonState(cNewButton,"1"); // disable button until OpComplete ButtonState(cOpenButton,"1"); // disable button until OpComplete ButtonState(cCloseButton,"1"); ButtonState(cDelButton,"1"); ButtonState(cConfigButton,"1"); ButtonState(cAddButton,"1"); ButtonState(cSaveButton,"1"); ButtonState(cExpButton,"1"); processNewChart(); // Open up a NEW Chart document.all[FullViewChartName].OpType = Type; // Save operation type DoNewOpen(); // go do New Open processing and insure Graph Control is loaded break; // CLOSE Button case "Close": top.banner.processStopCommX(); SetCursor("auto"); top.Rstatus.Pstat("Closing Chart '"+GraphO.GetGraphName()+"'"); GraphO.Close(true); // Close the Chart control IntroGraphStateF = 0; // reset IntroGraph Mode if active top.banner.IntroGraphMode = false; //FrameO.RDel = true; // flag to delete frame //Tid = setTimeout("processSchedDelete()",1000); // Delete from off of T/O func break; // SAVE Button case "Save": GraphO.Enable(false); // disable Chart window so Dialogue can get focus var SMfeatures = "border:thin; center:yes; dialogHeight:205px; dialogWidth:400px; help:no; maximize:no; minimize:no"; var selChartAr = new Array(); var dArgsArr = new Array(); dArgsArr[0] = "Name"; dArgsArr[1] = GraphO.GetGraphName(); selChartAr = window.showModalDialog("ChartSelect.htm",dArgsArr,SMfeatures); GraphO.Enable(true); // restore Chart window window.focus(); // make sure Window has focus if ( selChartAr[0] == true ) { GraphO.SetGraphName(selChartAr[1]) } top.Rstatus.Pstat("Saving Chart '"+GraphO.GetGraphName()+"'"); GraphO.Save(); // Save the Chart top.Rstatus.Pstat("Chart '"+GraphO.GetGraphName()+"' Saved"); break; // EXPORT Button case "Exp": if ( GraphO.IsDataPresent() ) { ButtonState(cExpButton,"1"); SetCursor("wait"); top.banner.processStartComm(); top.Rstatus.Pstat("One moment while exporting data for Chart '"+GraphO.GetGraphName()+"'"); GraphO.Export(); // Export } break; // DELETE Button case "Del": if ( !GraphO.GetChartList() ) { // Request list of available charts top.Rstatus.Pstat("Request to get List of Charts unsuccessful",true); } else { FrameO.OpType = Type; // Save operation type } // exit and wait OpComplete break; // CONFIG Button case "Config": GraphO.Wizard(); // Call method if ( GraphO.IsDataPresent() ) { GraphO.Save(); // Insure saved } break; // ADD Button case "Add": if ( GraphO != null ) { sArray = top.main.TreePane.RPMTree.GetSelectedIDs(); GraphO.AddCounters(sArray); // Call method GraphO.Save(); // Insure saved if ( !FrameO.HData ) { // if no data on chart yet SetCursor("wait"); top.banner.processStartComm(); FrameO.WData = 1; } } break; // Fast Reverse Button case "FR": GraphO.PlaybackDelay = PlaybackFast; // set for fast speed if ( GraphO.Reverse() ) { // Call method SetButtonOut(BLast); SetButtonIn("FR"); FrameO.BlV = BLast = "FR" } break; // Normal Reverse Button case "Rev": GraphO.PlaybackDelay = PlaybackNormal; // set for normal speed if ( GraphO.Reverse() ) { // Call method SetButtonOut(BLast); SetButtonIn("Rev"); FrameO.BlV = BLast = "Rev" } break; // Stop Button case "Stop": if ( GraphO.Stop() ) { // Call method SetButtonOut(BLast); SetButtonIn("Stop"); FrameO.BlV = BLast = "Stop" } break; // Normal Play Button case "Play": GraphO.PlaybackDelay = PlaybackNormal; // set for normal speed if ( GraphO.Play() ) { // Call method SetButtonOut(BLast); SetButtonIn("Play"); FrameO.BlV = BLast = "Play" } break; // Fast Forward Button case "FF": GraphO.PlaybackDelay = PlaybackFast; // set for fast speed if ( GraphO.Play() ) { // Call method SetButtonOut(BLast); SetButtonIn("FF"); FrameO.BlV = BLast = "FF" } break; // Fine Tune Properties Button case "FineTune": GraphO.ShowProperties(); break; // Toggle Tree View Button case "Tree": if ( top.main.IsTreeVisible() ) { top.main.expand(); // hide Tree ChCtrlButtons.style.display="none"; ChVCRButtons.style.display="none"; ChScrollButtons.style.display="none"; ChTreeButtons.style.display="none"; ChTreeButtonsH.style.display=""; rszH = 38; } else { top.main.restore(); // show Tree ChCtrlButtons.style.display=""; ChVCRButtons.style.display=""; ChScrollButtons.style.display=""; ChTreeButtons.style.display=""; ChTreeButtonsH.style.display="none"; rszH = 0; } processSizeChange(); break; } } // New/Open Function; Insure Graph Control is Loaded function DoNewOpen() { Tid = null; // reset if set var selNme = FullViewChartName; // new chart var GraphO = document.all["RpmGrph"+selNme]; // New selected Graph Object var FrameO = document.all[selNme]; // Selected Frame Object // Insure the Graph Control is loaded if ( GraphO.readyState != 4 ) { // Has Graph Control been loaded? Tid = setTimeout("DoNewOpen()",100); // Not complete, delay 100 ms. then check again return; // exit and wait } // Connect Chart to the Server var Bobj = document.body; // get BODY object var Cp = parseInt(Bobj.RPMCollectorPort,10); var Ar = "~AnalystRights="+((document.body.UserRights=="0") ? "1": "0"); if ( !( GraphO.Connect(Bobj.RPMServerAddress+Ar,Cp) ) ) { top.Rstatus.Pstat("CONNECT Request to Server Failed",true); FrameO.OpType = null; // Clear } } // Process OPEN and DELETE Event Requests from Chart's Context Menu function processOpenDeleteEvent(GraphO,fnc) { top.Rstatus.Pstat(""); // Clear status line // Get Frame object based on Graph object var cFn = GraphO.id.substring(7,GraphO.id.length); var FrameO = document.all[cFn]; // Frame object if ( fnc == "Open" ) { // if Open event if ( !GraphO.GetChartList() ) { // Request list of available charts top.Rstatus.Pstat("Request to get List of Charts unsuccessful",true); } else { FrameO.OpType = "Open"; // Set operation type } // exit and wait OpComplete } else { // other wise Delete event if ( confirm("Are you sure you want to Delete the Chart: "+GraphO.GetGraphName()+" ?") ) { // Delete user specified chart if ( !GraphO.Delete(GraphO.ChartID) ) { top.Rstatus.Pstat("Chart DELETE Request to Server Failed",true); } else { top.Rstatus.Pstat("Deleting Chart named '"+GraphO.GetGraphName()+"'"); initButtonState(); // reset Buttons ButtonState(cNewButton,"1"); // disable NEW button until OpComplete ButtonState(cOpenButton,"1"); // disable Open button until OpComplete } // Exit until OpComplete } // Confirm true } } // Process HasConnect Event function processHasConnection(GraphO,CnStat) { top.Rstatus.Pstat(""); // Clear status line // Get Frame object based on Graph object var cFn = GraphO.id.substring(7,GraphO.id.length); var FrameO = document.all[cFn]; // Frame object var selCmIx = getSelectedChartMgrIndex(cFn); // Chart Mgr index for this Frame // if Connect State is now True if ( CnStat == true ) { ButtonState(cCloseButton,"0"); FrameO.HCon = true; if ( FrameO.OpType == "New" ) { // if NEW Pending rstat = GraphO.New(); // issue NEW call } else if ( FrameO.OpType == "Open" ){ // if OPEN Pending rstat = GraphO.GetChartList(); // Request list of available charts } else { return; // unexpected, ignore } if ( rstat == false ) { // if unsuccessful initiating top.Rstatus.Pstat("Chart NEW/OPEN Request Failed",true); FrameO.RDel = true; // flag to delete frame Tid = setTimeout("processSchedDelete()",500); // Delete from off of T/O func } } // if NEW/GetChartList initiated OK, exit until OpComplete else { // Disconnect, delete Frame and Graph top.Rstatus.Pstat("Disconnected"); FrameO.RDel = true; // flag to delete frame Tid = setTimeout("processSchedDelete()",500); // Delete from off of T/O func alert("Disconnected from MonitorIT Server!"); } } // Process HasChart Event function processHasChart(GraphO,ChStat) { // Get Frame object based on Graph object var cFn = GraphO.id.substring(7,GraphO.id.length); var FrameO = document.all[cFn]; // Frame object var selCmIx = getSelectedChartMgrIndex(cFn); // Chart Mgr index for this Frame if ( selCmIx >= CObj.length ) { return; // exit if not valid } // if Chart State is now False if ( ChStat == false ) { // no more Chart top.Rstatus.Pstat(""); // Clear status line top.banner.processStopCommX(); SetCursor("auto"); FrameO.RDel = true; // flag to delete frame Tid = setTimeout("processSchedDelete()",500); // Delete from off of T/O func } else { // otherwise, Chart is now Active FrameO.HChart = true; var selNme = getSelectedChart(); if ( selNme == null ) { return; // exit if no chart selected } FrameO.WData = (FrameO.OpType == "New") ? 20 : 1; // initialize // if this Chart is Current Select Chart, set Buttons if ( FrameO == document.all[selNme] ) { setVCRButtons(FrameO.HData); if ( FrameO.OpType == "New" ) { setButtonsOn(); } else if ( FrameO.HData ) { setButtonsOn(); BLast = FrameO.BlV; // restore state of "Play" button if any SetButtonIn(BLast); if ( BLast == "Play" ) { GraphO.Play(); } } } } } // HasData Event; Enable/Disable VCR Controls if Chart is Selected function processHasData(GraphO,DaStat) { var cFn = GraphO.id.substring(7,GraphO.id.length); var FrameO = document.all[cFn]; // Frame object // If Has Data and previously Had Data, ignore if ( DaStat == FrameO.HData && DaStat ) return; // Save the HasData state for this Chart FrameO.HData = DaStat; var selNme = getSelectedChart(); if ( DaStat == true ) { // if Has Data FrameO.WData = 0; // reset top.banner.processStopCommX(); SetCursor("auto"); top.Rstatus.Pstat(""); // Clear status line } else { if ( FrameO.WData > 0 ) { if ( FrameO.WData%30 == 0 ) { alert("No data found yet in the database for the Counter(s) specified on chart '"+GraphO.GetGraphName()+"'!\n\nMake sure a Counter is being monitored by setting its associated checkbox in the 'Monitor Objects Tree' at left;\nOn Opening an existing Chart, make sure there is monitored data for the time-frame specified!\n\nIf you have just checked a Counter to start monitoring, it will take up to 2x the sampling\ninterval (default is 30 secs, therefore delay is 60 seconds) before data starts graphing!"); } ++FrameO.WData; if ( FrameO.WData > 30 ) { var nmsg = "Insure the Counter checkbox is checked to start monitoring"; for ( var i=0; i<FrameO.WData%10; i++ ) { nmsg += ">"; } top.Rstatus.Pstat(nmsg); } } FrameO.OpType = null; return; } // if this Chart is Current Select Chart, set VCR Buttons if ( selNme == null ) { return; // exit if no chart selected } if ( FrameO == document.all[selNme] ) { setVCRButtons(DaStat); if ( FrameO.HData ) { FrameO.WData = 0; // reset setButtonsOn(); BLast = FrameO.BlV; // restore state of "Play" button if any SetButtonIn(BLast); if ( BLast == "Play" ) { GraphO.Play(); } } } } // Process Event Chart List function processChartList(GraphO,ChartList) { // Get Frame object based on Graph object var cFn = GraphO.id.substring(7,GraphO.id.length) var FrameO = document.all[cFn]; // Frame object if ( FrameO.OpType != "Open" && FrameO.OpType != "Del") { return; // unexpected, ignore } var selChartAr = new Array(); selChartAr = ChartList.split(","); // check if only one chart if ( selChartAr[0] == 0 ) { // if no Charts if ( top.banner.DemoMode && FrameO.OpType == "Open" ) { top.Rstatus.Pstat("Chart OPEN Request Failed",true); FrameO.RDel = true; // flag to delete frame Tid = setTimeout("processSchedDelete()",500); // Delete from off of T/O func processViewChartsBookmarks(ChartNotFoundBid) return; // exit } if ( GraphO.New() == false ) { // issue NEW call instead top.Rstatus.Pstat("Chart OPEN Request Failed",true); FrameO.RDel = true; // flag to delete frame Tid = setTimeout("processSchedDelete()",500); // Delete from off of T/O func } else { top.Rstatus.Pstat("Chart OPEN Request Failed; no Charts found",true); ButtonState(cCloseButton,"0"); // enable close & config button ButtonState(cConfigButton,"0"); } return; // exit } // Check if Demo Mode else Go prompt for name of chart to Open or Delete if ( top.banner.DemoMode && FrameO.OpType == "Open" ) { for ( var i=2; i< selChartAr.length; i+=2 ) { if ( selChartAr[i] == ChartOpenName ) { break; // stop looking } } if ( i >= selChartAr.length ) { // if not found top.Rstatus.Pstat("Chart OPEN Request Failed",true); FrameO.RDel = true; // flag to delete frame Tid = setTimeout("processSchedDelete()",500); // Delete from off of T/O func processViewChartsBookmarks(ChartNotFoundBid) return; // exit } selChartAr[0] = true; // flag OK selChartAr[1] = selChartAr[i-1]; // Chart ID selChartAr[2] = selChartAr[i]; // Chart Name processViewChartsBookmarks(OpenBkMrk) } else if ( !(selChartAr[0] == 1 && FrameO.OpType == "Del") ) { // skip Dialogue if Delete and only one Chart GraphO.Enable(false); // disable Chart window so Dialogue can get focus var SMfeatures = "border:thin; center:yes; dialogHeight:205px; dialogWidth:400px; help:no; maximize:no; minimize:no"; //"ChartSelect.htm",FrameO.OpType+";"+ChartList; var dArgsArr = new Array(); dArgsArr[0] = FrameO.OpType; dArgsArr[1] = ChartList; selChartAr = window.showModalDialog("ChartSelect.htm",dArgsArr,SMfeatures); GraphO.Enable(true); // restore Chart window window.focus(); // make sure Window has focus } ChID = selChartAr[1]; // selected Chart ID if ( FrameO.OpType == "Del" ) { // If Delete operation type if ( selChartAr[0] == true ) { // if user Selected if ( confirm("Are you sure you want to Delete the following Chart(s)? "+selChartAr[2]) ) { // Check if Chart is being displayed var dCar = new Array(); dCar = ChID.split(","); // get list of IDs to delete for ( var di=0; di < CObj.length; di++ ) { // for each Chart in Chrat Mgr for ( var aix=0; aix < dCar.length; aix++ ) { // compare against list of Charts to delete if ( document.all["RpmGrph"+CObj.options[di].text].ChartID == dCar[aix]) { // if match GraphO = document.all["RpmGrph"+CObj.options[di].text]; // Chart Object to be deleted break; } } if ( aix < dCar.length ) { // break from Chart Mgr "for loop" if match was found break; } } // Delete user specified chart if ( !GraphO.Delete(ChID) ) { top.Rstatus.Pstat("Chart DELETE Request to Server Failed",true); } else { top.Rstatus.Pstat("Deleting Chart(s)"); if ( di < CObj.length ) { // if deleted Chart is being displayed initButtonState(); // reset Buttons ButtonState(cNewButton,"1"); // disable NEW button until OpComplete ButtonState(cOpenButton,"1"); // disable Open button until OpComplete } } // Exit until OpComplete } // Confirm true } // User Selected FrameO.OpType = null; // clear } // end Delete else { // otherwise "Open" operation type if ( selChartAr[0] == false ) { // if user Canceled FrameO.OpType = null; // clear if ( FrameO.HChart == true ) { // if Had a Chart previous to Open var selNme = getSelectedChart(); // get selected Chart if ( selNme != null ) { // if this Chart is Current Select Chart, set Buttons if ( FrameO == document.all[selNme] ) { ButtonState(cNewButton,"0"); // reenable NEW and OPEN buttons ButtonState(cOpenButton,"0"); } } } else { // Did not have a Chart previously top.Rstatus.Pstat(""); // Clear status line FrameO.RDel = true; // flag to delete frame Tid = setTimeout("processSchedDelete()",500); // Delete from off of T/O func } } // Open user specified chart else { if ( GraphO.open(ChID ,selChartAr[3]+"~"+selChartAr[5]) == false ) { top.Rstatus.Pstat("Chart OPEN Request Failed",true); FrameO.RDel = true; // flag to delete frame Tid = setTimeout("processSchedDelete()",500); // Delete from off of T/O func } // Exit and wait Open Op Complete else { SetCursor("wait"); top.banner.processStartComm(); FrameO.WData = 1; // init top.Rstatus.Pstat("Opening Chart '"+selChartAr[2]+"' From "+selChartAr[4]+" -To- "+selChartAr[6]); if ( ChartMgr.length == 2 && !PIP_On ) { // if PIP Off, default to PIP On processPIPToggle(cPipButton); } FrameO.OpType = ""; // clear } } } // end Open } // Process Click on a Thumbnail Chart to make it the Current Selected Chart function processOnSelectChart(GraphO) { top.Rstatus.Pstat(""); // Clear status line // Get Frame object based on Graph object var cFn = GraphO.id.substring(7,GraphO.id.length); var FrameO = document.all[cFn]; // Frame object var selNme = getSelectedChart(); // current selected Chart if ( selNme == cFn ) { // if no change, ignore return; } // If there is a current selected chart, reset it if ( selNme != null ) { document.all[selNme].BlV = BLast; // save chart's active "Play" button if any SetButtonOut(BLast); // set button out document.all[selNme].style.borderColor = ChartNotSelectedColor; document.all[selNme].style.borderWidth = borderSz+"px"; } if ( CObj.length > 1 ) { // if more than one chart // Set this clicked Chart as selected FrameO.style.borderColor = ChartSelectedColor; FrameO.style.borderWidth = SelectedBorderSz + "px"; CurSelectChart = cFn; // Set buttons setVCRButtons(FrameO.HData); // set VCR Buttons accordingly if ( FrameO.HData ) { BLast = FrameO.BlV; // restore state of "Play" button if any SetButtonIn(BLast); } top.Rstatus.Pstat("'"+GraphO.GetGraphName()+"' selected"); } } // Process DoubleClick on a Thumbnail Chart to make it the Current Selected Chart and Full View function processOnSwapChart(GraphO) { top.Rstatus.Pstat(""); // Clear status line if ( CObj.length > 1 ) { // if more than one chart processOnSelectChart(GraphO); // go select Chart FullViewChartName = CurSelectChart; // now Swap it to Full View ButtonState(cSwapButton,"1"); // Swap button off setChartPos(); } } // Enable/Disable Add Counter Button function processEnableAddButton(IsSelected) { if ( top.MainLoaded == false ) { return; // not loaded yet } if ( CObj.length != 0 ) { ButtonState(cAddButton,top.main.TreePane.AddBState); } } // Process Event Log Message function processEventLogMsg(Src,Msg,Type) { sM = ( Msg == "" ) ? Msg : " : "+Msg; //top.Rstatus.Pstat(Src+sM); } // Process the Help Requested Event function processHelp(TopicID,SubTID) { alert("Help: TopicID=" + TopicID + " SubTopicID=" + SubTID); } // Process a Scheduled delete of a Frame function processSchedDelete() { var FO; // Frame Object for ( var i=0; i < CObj.length; i++ ) { FO = document.all[CObj.options[i].text]; if ( FO.RDel == true ) { processDeleteFrame(FO,i); // go delete frame break; } } Tid = null; // clear T/O ID } // Delete Frame Processing function processDeleteFrame(FO,sCmIx) { var sN = CObj.options[sCmIx].text; // Frame name var Gob = document.all["RpmGrph"+sN]; // Graph Object if ( CurSelectChart != null ) { document.all[CurSelectChart].style.borderColor = ChartNotSelectedColor; document.all[CurSelectChart].style.borderWidth = borderSz+"px"; } FO.outerText = ""; // delete the frame CObj.remove(sCmIx); // remove from Chart Manager CurSelectChart = null; // no current chart selected SetButtonOut(BLast); if ( CObj.length > 0 ) { // if at least one chart FullViewChartName = CObj.options[0].text; // default to 1st Chart setChartPos(); // redisplay setButtonsOn(); setVCRButtons(document.all[FullViewChartName].HData); // set VCR Buttons accordingly if ( document.all[FullViewChartName].HData ) { BLast = document.all[FullViewChartName].BlV; // restore state of "Play" button if any SetButtonIn(BLast); } if ( CObj.length == 1 ) { // if only one Chart, set unselected border document.all[FullViewChartName].style.borderColor = ChartNotSelectedColor; document.all[FullViewChartName].style.borderWidth = borderSz+"px"; PIP_On = true; // reset PIP SetButtonOut("Pip"); } } else { // otherwise no charts initButtonState(); FullViewChartName = null; DivTitle.style.display = ""; // Display Title HelpText.style.display=""; BLast = null; } } // Set initial button state function initButtonState() { ButtonState(cNewButton,"0"); ButtonState(cOpenButton,"0"); ButtonState(cCloseButton,"1"); ButtonState(cDelButton,"1"); ButtonState(cConfigButton,"1"); ButtonState(cAddButton,"1"); ButtonState(cRevButton,"1"); ButtonState(cStopButton,"1"); ButtonState(cPlayButton,"1"); ButtonState(cFRButton,"1"); ButtonState(cFineTuneButton,"1"); ButtonState(cFFButton,"1"); ButtonState(cPipButton,"1"); ButtonState(cSwapButton,"1"); ButtonState(cNextButton,"1"); ButtonState(cPrevButton,"1"); ButtonState(cSaveButton,"1"); ButtonState(cExpButton,"1"); cSepLong1.src = "images/SepLong.gif"; cSepLong2.src = cSepLong1.src; } function setButtonsOn() { ButtonState(cNewButton,"0"); // reenable button ButtonState(cOpenButton,"0"); ButtonState(cAddButton,top.main.TreePane.AddBState); if (CObj.length > 0) { // if first one, enable the other Chart buttons ButtonState(cDelButton,"0"); ButtonState(cCloseButton,"0"); ButtonState(cConfigButton,"0"); ButtonState(cSaveButton,"0"); // only one chart, disable PIP control buttons ButtonState(cPipButton,"1"); ButtonState(cSwapButton,"1"); ButtonState(cNextButton,"1"); ButtonState(cPrevButton,"1"); } if ( CObj.length > 1) { // if 2 or more Charts opened, enable the Scroll/PIP Buttons ButtonState(cPipButton,"0"); // toggle PIP state, then go toggle back to state on entry // and insure correct button is set PIP_On = (PIP_On) ? false : true; processPIPToggle(cPipButton); //ButtonState(cSwapButton,"0"); ButtonState(cNextButton,"0"); ButtonState(cPrevButton,"0"); } } function setVCRButtons(onf) { onf = ( onf == true ) ? "0" : "1"; ButtonState(cRevButton,onf); ButtonState(cStopButton,onf); ButtonState(cPlayButton,onf); ButtonState(cFRButton,onf); ButtonState(cFineTuneButton,onf); ButtonState(cFFButton,onf); ButtonState(cExpButton,onf); if ( FullViewChartName == CurSelectChart || CObj.length <= 1) { ButtonState(cSwapButton,"1"); // Swap button off } else { ButtonState(cSwapButton,"0"); // Swap button on } } // Set the Play/Stop/Rev/FF/FR Buttons In or Out function SetButtonIn(Bnme) { if ( Bnme == null ) return; // exit if none var Bobj = document.all["c"+Bnme+"Img"]; Bobj.src = "images/"+Bnme+"RedImg.gif"; if ( Bnme == "Stop" ) { var Bobj = document.all["c"+Bnme+"Img1"]; Bobj.src = "images/"+Bnme+"RedImg.gif"; } if ( Bnme == "Play" || Bnme == "Stop" || Bnme == "Pip" ) { var Bobj = document.all["c"+Bnme+"ImgH"]; Bobj.src = "images/"+Bnme+"RedImg.gif"; } } function SetButtonOut(Bnme) { if ( Bnme == null ) return; // exit if none var Bobj = document.all["c"+Bnme+"Img"]; Bobj.src = "images/"+Bnme+"Img.gif"; if ( Bnme == "Stop" ) { var Bobj = document.all["c"+Bnme+"Img1"]; Bobj.src = "images/"+Bnme+"Img.gif"; } if ( Bnme == "Play" || Bnme == "Stop" || Bnme == "Pip" ) { var Bobj = document.all["c"+Bnme+"ImgH"]; Bobj.src = "images/"+Bnme+"Img.gif"; } } function ButtonState(bObj,bst) { if ( bObj.id == "cDelButton" || bObj.id == "cNewButton" || bObj.id == "cSaveButton" || bObj.id == "cConfigButton" || bObj.id == "cFineTuneButton" || bObj.id == "cAddButton" ) { if ( document.body.UserRights == "0" ) { return; } } bObj.bdis = bst; // save state bObj.disabled = (bst == "0") ? "" : "disabled"; //bObj.className = (bst == "0") ? "BoxButton" : "BoxButtonD"; if ( bObj.id == "cOpenButton" || bObj.id == "cNewButton" || bObj.id == "cPlayButton" || bObj.id == "cStopButton" || bObj.id == "cPipButton" ) { ButtonState(document.all[bObj.id+"H"],bst); } } // Determine the Current Selected Chart function getSelectedChart() { //top.banner.processStopCommX(); // stop Animated logo return( (CObj.length == 0) ? null : ((CObj.length == 1) ? FullViewChartName : CurSelectChart) ); } // Determine Chart Manager Index for a Given Chart Name function getSelectedChartMgrIndex(cNme) { //top.banner.processStopCommX(); // stop Animated logo for ( var selCmIx=0; selCmIx < CObj.length; selCmIx++ ) { if ( CObj.options[selCmIx].text == cNme ) { break; } } return selCmIx; // return Chart manager Index } // Process to Toggle the Hide and Show of the Banner & Menu Frames var hideToggle = 0; function processBannerMenu() { if ( hideToggle == 0 ) { top.BannerMenuHide(); hideToggle = 1; } else { top.BannerMenuShow(); hideToggle = 0; } } function processViewChartsBookmarks(bid) { switch ( bid ) { case 9998: // IntroGraph Processing case 9999: top.banner.DemoMode = false; // reset IntroGraphStateF = bid; processIntroGraphMode(); break; } } function PopUpContextOpen() { MainDiv.style.visibility = "hidden"; } function PopUpContextClose() { MainDiv.style.visibility = "visible"; } function processExportComplete(estat,exportfile) { if ( estat ) { alert("Chart data successfully exported to file named: '"+exportfile+"'"); } else { alert("Chart data export failed"); } top.Rstatus.Pstat(""); top.banner.processStopCommX(); SetCursor("auto"); ButtonState(cExpButton,"0"); } function processExportStarted() { ButtonState(cExpButton,"1"); SetCursor("wait"); top.banner.processStartComm(); top.Rstatus.Pstat("One moment while exporting data for Chart '"+GraphO.GetGraphName()+"'"); } //--> </script> <script LANGUAGE="JavaScript" src="js/IntroGraph.js"></script> <script LANGUAGE="JavaScript" src="js/MiscFunc.js"></script> <script LANGUAGE="JavaScript" src="js/ButtonFunc.js"></script> <script LANGUAGE="JavaScript" src="js/ChartPreLImg.js"></script> <script LANGUAGE="JavaScript" src="js/SNMPInstances.js"></script> <script LANGUAGE="JavaScript" FOR="window" EVENT="onresize()"> <!-- top.banner.savePageCoord(event,document.body,'AnalyzeCharts'); processSizeChange(); //--> </script> <script LANGUAGE="JavaScript" src="js/PopUpMenuFunc.js"></script> <!-- Invisible Object to Support Simulated Click Event --> <button id="FakeBut" style="display:none" onclick="top.banner.savePageCoord(event,document.body,'AnalyzeCharts')"></button> <!-- Insure Object Control is Loaded and Installed --> <object id="PrimaryGraphObj" CLASSID="clsid:D8C8B275-CB6A-11D2-9BAD-204C4F4F5020" onerror="ChartObjectError()" CODEBASE="controls/RpmGraph.cab#version=5,0,0,9" style="display:none"></object> <!-- Chart Display Area --> <div id="MainDiv"> <table id="DivTitle" border="1" borderColor="activeborder" align="left"> <tr><td borderColorDark="graytext" borderColorLight="white" style="font-weight:800; font-size:12pt; background-color:threedhighlight; color:windowtext"> <img src="images/sViewCharts.gif" align="absmiddle" height="16" width="16"> CounterWatch Graphs </td></tr> </table><BR CLEAR=ALL> <center><div class="WarningStyle" id="WarningBox"><table border="0" cellpadding="0" cellspacing="2" width="90%"> <tr> <td width="43"><img src="images/HourGlass.gif" width="32" height="32" alt="Please Wait!" align="bottom" border="0"></td> <td style="font-family:Arial; font-size:10pt; font-weight:bold; color:infotext">Please Wait While Chart Component Completes Loading!</td> </tr> </table> </div></center> <table id="HelpText" border="0" cellpadding="0" cellspacing="0" width="600" height="86"> <tr> <td class="inputlabel" width="600" height="25"> <ul> <li> Press the 'New' button to create a new chart, or press the 'Open' button for a dialogue box where you can select from among your saved charts </li> <li> Add a Counter to the chart from the Tree view at left by clicking the Counter name to select it; then press the 'Add' button. A maximum of 16 Counters per chart can be added </li> <li> Use the 'Wizard' button and 'Tune' button to configure the selected chart, then press the 'Save' button to save the chart settings; Right-click on a selected chart to pop-up a menu with the same function choice as the button bar </li> <li> In the Tree view at left:<br> (Click the 'Tree' button below to toggle the Tree view off/on) <ul type="square"> <li> Expand the Groups, Servers/Devices, and Objects; hover with the mouse over Counter names to see a description in a pop-up tool tip; for SNMP Counters, the description also contains the 'Instance' and 'Syntax' information for the Counter </li> <li> Right-click with the mouse on a Counter name for a pop-up menu; the 'Summary' will provide a summary of all the monitored values in the database for the Counter; for SNMP Counters the menu contains 'Get' and 'Set' commands </li> <li> For SNMP Table entries, distinguished in the Tree with the empty meter icon, the menu contains an 'Add Instance'; choose 'Add Instance' to query the device to determine the available 'Instances' where you can then select 'Instances' to add to the Tree for monitoring; the menu for these added 'Instances' contains a 'Delete Instance' to remove these Counters </li> <li> Right-click on the Server/Device name for a pop-up menu; select 'Property' to set the default 'Monitor Schedule' for all the associated Counters for this Server/Device </li> <li> Set the checkbox to the left of a Counter to start monitoring the Counter according to the 'Monitor Schedule' property for its associated Server/Device; go to 'Manage CounterWatch Monitoring' for a summary view of all the Counters selected for monitoring </li> </ul> </li> <li> Click the 'question-mark' icon above-right for more Help on all the Chart and Tree features </li> </ul> </td> </tr> </table> <!-- Button Display Area --> <div id="ButtonDiv"> <div class="ChButton" id="BgImg" style="background-color:activeborder"></div> <div class="ChButton" style="height:60; width:186" id="ChTreeButtons" > <button id="cTreeButton" btype="cTree" bdis="0" style="position:absolute; left:4; top:2; cursor:hand" onclick="processChartButton('Tree')" title="Press to Toggle Tree View"><img src="images/treehideshow.gif" height="18" width="19"></button> <button id="cToggleButton" btype="cTree" bdis="0" style="position:absolute; left:6; top:30; cursor:hand" onclick="processBannerMenu()" title="Press to Toggle Hide/Show of Menu and Banner Frames"><img src="images/FullView.gif" align="absmiddle" height="16" width="16"></button> </div> <div class="ChButton" style="height:14; width:186; display:none" id="ChTreeButtonsH" > <button id="cTreeButtonH" btype="cTree" bdis="0" style="position:absolute; left:4; top:1; cursor:hand" onclick="processChartButton('Tree')" title="Press to Toggle Tree View"><img src="images/treehideshow.gif" height="13" width="13"></button> <button id="cToggleButtonH" btype="cTree" bdis="0" style="position:absolute; left:32; top:1; cursor:hand" onclick="processBannerMenu()" title="Press to Toggle Hide/Show of Menu and Banner Frames"><img src="images/FullView.gif" align="absmiddle" height="13" width="13"></button> <button id="cNewButtonH" style="position:absolute; left:60; top:1; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" btype="cNew" bdis="1" onclick="processChartButton('New')" title="Press for New Chart" disabled><img src="images/NewImg.gif" align="absmiddle" height="13" width="13"></button> <button id="cOpenButtonH" style="position:absolute; left:88; top:1; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" btype="cOpen" bdis="1" onclick="processChartButton('Open')" title="Press to Open Existing Chart" disabled><img src="images/OpenImg.gif" align="absmiddle" height="13" width="13"></button> <button id="cPlayButtonH" style="position:absolute; left:116; top:1; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" btype="cPlay" bdis="1" onclick="processChartButton('Play')" title="Press to Play Selected Chart" disabled><img id="cPlayImgH" src="images/PlayImg.gif" align="absmiddle" height="13" width="13"></button> <button id="cStopButtonH" style="position:absolute; left:144; top:1; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" btype="cStop" bdis="1" onclick="processChartButton('Stop')" title="Press to Stop Selected Chart" disabled><img id="cStopImgH" src="images/StopImg.gif" align="absmiddle" height="13" width="8"></button> <button id="cPipButtonH" style="position:absolute; left:167; top:1; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" btype="cPip" bdis="1" onclick="processPIPToggle(this)" title="Press to Toggle PIP Mode" disabled><img id="cPipImgH" src="images/PipImg.gif" align="absmiddle" height="13" width="13"></button> </div> <div class="ChButton" style="height:60; width:248" id="ChCtrlButtons" > <button id="cNewButton" style="position:absolute; left:4; top:2" btype="cNew" bdis="1" onclick="processChartButton('New')" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img src="images/NewImg.gif" align="absmiddle" height="14" width="13"> New</button> <button id="cOpenButton" style="position:absolute; left:68; top:2" btype="cOpen" bdis="1" onclick="processChartButton('Open')" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img src="images/OpenImg.gif" align="absmiddle" height="14" width="15">Open</button> <button id="cCloseButton" style="position:absolute; left:132; top:2" btype="cClose" bdis="1" onclick="processChartButton('Close')" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img src="images/CloseImg.gif" align="absmiddle" height="14" width="15">Close</button> <button id="cSaveButton" style="position:absolute; left:196; top:2" btype="cSave" bdis="1" onclick="processChartButton('Save')" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img src="images/sSave.gif" align="absmiddle" height="15" width="15">Save</button> <button id="cAddButton" style="position:absolute; left:4; top:30" btype="cAdd" bdis="1" onclick="processChartButton('Add')" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img src="images/AddImg.gif" align="absmiddle" height="14" width="14"> Add</button> <button id="cConfigButton" style="position:absolute; left:68; top:30" btype="cConfig" bdis="1" onclick="processChartButton('Config')" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img src="images/ConfigImg.gif" align="absmiddle" height="14" width="15">Wizard</button> <button id="cDelButton" style="position:absolute; left:132; top:30" btype="cDel" bdis="1" onclick="processChartButton('Del')" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img src="images/DelImg.gif" align="absmiddle" height="14" width="14">Delete</button> <button id="cExpButton" style="position:absolute; left:196; top:30" btype="cExp" bdis="1" onclick="processChartButton('Exp')" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img src="images/DataSave.gif" align="absmiddle" height="14" width="14">Export</button> </div> <div class="ChButton" style="height:50; width:264" id="ChVCRButtons" > <img id="cSepLong1" style="position:absolute; left:4; top:4" height="48" width="20"> <button id="cRevButton" style="position:absolute; left:26; top:2" btype="cRev" bdis="1" onclick="processChartButton('Rev')" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img id="cRevImg" src="images/RevImg.gif" align="absmiddle" height="14" width="14"> Rev</button> <button id="cStopButton" style="position:absolute; left:90; top:2" btype="cStop" bdis="1" onclick="processChartButton('Stop')" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img id="cStopImg" src="images/StopImg.gif" align="absmiddle" height="14" width="8"> Stop <img id="cStopImg1" src="images/StopImg.gif" align="absmiddle" height="14" width="8"></button> <button id="cPlayButton" style="position:absolute; left:154; top:2" btype="cPlay" bdis="1" onclick="processChartButton('Play')" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled>Play <img id="cPlayImg" src="images/PlayImg.gif" align="absmiddle" height="14" width="14"></button> <button id="cFRButton" style="position:absolute; left:26; top:30" btype="cFR" bdis="1" onclick="processChartButton('FR')" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img id="cFRImg" src="images/FRImg.gif" align="absmiddle" height="14" width="25"> FR</button> <button id="cFineTuneButton" style="position:absolute; left:90; top:30" btype="cFineTune" bdis="1" onclick="processChartButton('FineTune')" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img id="cFineTuneImg" src="images/TuneImg.gif" align="absmiddle" height="14" width="14">Tune</button> <button id="cFFButton" style="position:absolute; left:154; top:30" btype="cFF" bdis="1" onclick="processChartButton('FF')" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled>FF <img id="cFFImg" src="images/FFImg.gif" align="absmiddle" height="14" width="27"></button> <img id="cSepLong2" style="position:absolute; left:216; top:4" height="48" width="20"> </div> <div class="ChButton" style="height:60; width:128" id="ChScrollButtons" > <button id="cPipButton" style="position:absolute; left:4; top:2" btype="cPip" bdis="1" onclick="processPIPToggle(this)" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img id="cPipImg" src="images/PipImg.gif" align="absmiddle" height="14" width="14"> PIP</button> <button id="cSwapButton" style="position:absolute; left:68; top:2" btype="cSwap" bdis="1" onclick="processSelectChart()" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img src="images/SwapImg.gif" align="absmiddle" height="14" width="14"> Swap</button> <button id="cNextButton" style="position:absolute; left:4; top:30" btype="cNext" bdis="1" onclick="processScrollChart(true)" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img src="images/PlayImg.gif" align="absmiddle" height="14" width="14"> Next</button> <button id="cPrevButton" style="position:absolute; left:68; top:30" btype="cPrev" bdis="1" onclick="processScrollChart(false)" style="width:60px; height:24px; font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" disabled><img src="images/RevImg.gif" align="absmiddle" height="14" width="14"> Prev</button> </div> </div> <!-- Chart Manager: Dynamically Added <Option> tags represent Charts --> <select id="ChartMgr" style="display:none"></select> </body> </html>